package Hot_100;/*
给定一个长度为 n 的整数数组 height 。有 n 条垂线，第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/container-with-most-water
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
* */

/*
    思路:要求最大的面积
    面积的计算公式: S=min(height[i],height[j]) * (j-i)
    一开始两个指针位于两端边界
    向内移动短板，水槽的短板 min(h[i], h[j]) 可能变大，因此下个水槽的面积可能增大 。
    若向内移动长板 ，水槽的短板 min(h[i], h[j])不变或变小，因此下个水槽的面积一定变小 。
    有点类似滑动窗口的感觉
*/

public class T11_maxArea {
    public int maxArea_2(int[] height) {
        int i=0,j=height.length-1;
        int area,maxArea=0;
        while (i < j) {
            area = Math.min(height[i], height[j]) * (j - i);
            if (area > maxArea) {
                maxArea=area;
            }

            if (height[i] < height[j]) {
                i++;
            }else {
                j--;
            }
        }
        return maxArea;
    }
}
